// 测试
// export const BaseURL = 'https://test.lszbg.cn'
// 正式
import {useUserInfoStore} from "../stores/modules/userInfo";
import {useCommonInfoStore} from "../stores/modules/commonInfo";
import {getDaysBetweenStop} from "./date";
import {conUtils} from "./conUtils";

// 图片地址不需要修改
export const BaseImgUrl = 'https://lsz.lszbg.com/imgs'
  // 切换域名
 // export const BaseURL = 'https://lsz.lszbg.com'
export const BaseURL = 'https://test.lszbg.cn'
export const IsTestWgt = false // 是否测试热更新
export let Version = '1.4.0'
// TODO 开发环境配置
export let lszbgDev = BaseURL === 'https://test.lszbg.cn'
export const IsDevelopment = lszbgDev
let client = 'applet_wechat'
const date = '2026/6/18'
let platform = uni.getSystemInfoSync().platform;
// 获取设备信息
export const deviceInfo = uni.getSystemInfoSync()
console.log('平台数据=', deviceInfo)
const httpInterceptor = {
    // 拦截前触发
    invoke(options) {
        const userInfoStore = useUserInfoStore()
        // 1. 非 http 开头需拼接地址
        if (!options.url.startsWith('http')) {
            options.url = BaseURL + options.url
        }
        if (options.url.indexOf('meituan.com') !== -1) {
            return
        }
        if (platform === 'ios' || platform === 'android') {
            // #ifdef APP-PLUS
            plus.runtime.getProperty(plus.runtime.appid, (appInfo) => {
                Version = appInfo.version //应用版本号
            })
            client = platform === 'ios' ? '苹果APP' : platform === 'android' ? '安卓APP' : "其他"
            // #endif
        }
        // #ifdef H5
        client = "H5"
        // #endif
        // 2. 请求超时
        options.timeout = 30000
        // 3. 添加小程序端请求头标识
        options.header = {
            // 'client': client ,
            'version': Version,
            ...options.header,
        }
        options.data = {
            'version': Version,
            'client': client,
            ...options.data,
        }
        // 获取成员信息的token
        const token = userInfoStore.profile?.token
        if (token) {
            // 将token赋值给请求头的Authorization字段
            options.header.Authorization = token
        }
        // console.log('options.url--->', options.url)
        // console.log("options.header--->", options.header)
        // console.log("options.data--->", options.data)
    },
}

// 拦截 request 请求
uni.addInterceptor('request', httpInterceptor)
// // 拦截 uploadFile 文件上传
uni.addInterceptor('uploadFile', httpInterceptor)
/**
 * 请求函数
 * @returns Promise
 *  1. 返回 Promise 对象，用于处理返回值类型
 *  2. 401错误  -> 清理用户信息，跳转到登录页
 *  3. 其他错误 -> 根据后端错误信息轻提示
 *  4. 网络错误 -> 提示用户换网络
 */
export const lsHttp = (options, isShowLoading = true, isMask = true, isHideLoading = true, title = "加载中...") => {
    // if (getDaysBetweenStop(date) <= 0) {
    //     uni.hideLoading()
    //     uni.showModal({
    //         title: '提示',
    //         content: '当前系统版本过低，请更新代码打包上传后再试',
    //         confirmText: '确定',
    //     })
    //     return
    // }
    // console.log('lsHttp.options', options)
    const userInfoStore = useUserInfoStore()
    isShowLoading ? uni.showLoading({
        title: title,
        mask: isMask,
    }) : null
    return new Promise((resolve, reject) => {
        uni.request({
            ...options,
            success(res) {
                isHideLoading ? uni.hideLoading() : null
                // 状态码 2xx，参考 axios 的设计
                const data = res.data
                if (options.url.startsWith("https://dspadadapter") || options.url.startsWith("https://api.mp.xingkonglm.cn")) {
                    resolve(data)
                    return
                }
                conUtils(options.url, data.status)
                conUtils(options.url, data)
                if (data.ret === 0) {
                    return;
                }
                if (res.statusCode >= 200 && res.statusCode < 300) {
                    if (options.isData === true){
                        if (data.status === 1) {
                            resolve(data)
                        } else {
                            console.log(data.msg)
                        }
                    } else if(options.isHandle === true){
                        if (data.status === 1) {
                            resolve(data)
                        } else {
                            console.log(data.msg)
                        }
                    } else if(options.isMyMoney === true){
                        if (data.status === 1) {
                            resolve(data)
                        } else {
                            console.log("我的省钱="+data.msg)
                        }
                    } else if(options.isPoster === true){
                        if (data.status === 1) {
                            resolve(data)
                        } else {
                            console.log("海报二维码展示="+data.msg)
                        }
                    }
                    else {
                        if (data.status === 1) {
                            resolve(data)
                        } else if (data.status === -1) {
                            uni.showToast({
                                icon: 'none', // 显示提示信息的图标
                                duration: 3000, // 提示信息显示的持续时间
                                title: data.msg || '请求错误', // 提示信息的内容
                            }).then(() => {
                            })
                            userInfoStore.clearProfile()
                            // setTimeout(() => {
                            //   uni.navigateTo({
                            //     url: '/pages/login/login',
                            //   }).then(() => {
                            //   })
                            // }, 1800)
                            // reject(res) // 返回错误结果
                        } else if (data.status === 2) {
                            uni.showToast({
                                icon: 'none',
                                duration: 3000,
                                title: data.msg || '请求错误',
                            }).then(() => {
                            })
                            const commonInfoStore = useCommonInfoStore()
                            commonInfoStore.clearId()
                        } else {
                            uni.showToast({
                                icon: 'none', // 显示提示信息的图标
                                duration: 3000, // 提示信息显示的持续时间
                                title: data.msg || '请求错误', // 提示信息的内容
                            }).then(() => {
                            })
                            conUtils("data.status = 0 ", data.msg)
                            reject(res) // 返回错误结果
                        }
                    }

                } else if (res.statusCode === 401) {
                    // 401错误登录过期  -> 清理用户信息，跳转到登录页
                    uni.showToast({
                        icon: 'none', // 显示提示信息的图标
                        duration: 3000, // 提示信息显示的持续时间
                        title: data.msg || '请求错误', // 提示信息的内容
                    }).then(() => {
                    })
                    userInfoStore.clearProfile()
                    // 导航到登录页面
                    uni.navigateTo({url: '/pages/login/login'}).then(() => {
                    })
                    reject(res) // 返回错误结果
                } else {
                    // 检查返回消息是否为'请先登录'
                    if (data.msg === '请先登录') {
                        // 调用工具函数提示用户需要重新登录
                        conUtils('重新登录')
                        // 清除用户信息存储中的用户资料
                        userInfoStore.clearProfile()
                        // 导航到登录页面，要求用户重新登录
                        uni.navigateTo({
                            url: '/pages/login/login',
                        }).then(() => {
                            // 可以在此处添加导航完成后的处理逻辑
                        })
                    }

                    // 其他错误 -> 根据后端错误信息轻提示
                    uni.showToast({
                        icon: 'none', // 显示提示信息的图标
                        duration: 3000, // 提示信息显示的持续时间
                        title: res.data.msg || '请求错误', // 提示信息的内容
                    }).then(() => {
                    })
                    reject(res)
                }
            },
            // 响应失败
            fail(err) {
                console.log("errerrerrerrerrerrerr",err)
                isHideLoading ? uni.hideLoading() : null
                if (err.errMsg.includes("timeout")) {
                    uni.showToast({
                        icon: 'none',
                        title: '请求超时'+options.url,
                    },2600)
                } else {
                    uni.showToast({
                        icon: 'none',
                        title: '请求错误',
                    })
                }
                reject(err)
            },
        })
    })
}
// 测试安卓APP，优化新手教程页面，优化设置页面，用户信息加密，优化订单页面，测试店铺拉黑用户